#include<iostream>


class Test
{
    public:
    // 类内只留下声明
        Test();
        
        
        Test(const Test& t);

};

// RVO优化： return value optimizer:返回值优化
// 当返回一个右值对象时，外部对象不会进行拷贝
// 而是直接拿走右值的对象资源
// 形参 不在ROV优化 内
Test func()
{
    Test t;
    return t;   // 在离开函数时，t就没了，所以 它是一个将亡值  可以被夺取
}




// Test func(Test &t)
// {
//     return t;   
// }





int main()
{



    // 匿名对象：生命周期只有 一行
    Test();

    // 右值：将亡值，即将释放的对象
    // 可以直接夺取右值的对象资源

    
    
                        // 左值拷贝  
     Test t = func();//无参    // 省去一次拷贝 //右值不拷贝

    return 0;
}